<?php
/**
 * 货品列表模型
 */
 class GoodsListModel extends Model{
 	public $table = 'Goods_list';
	public $validate = array();
	
	// 添加货品单
	public function addGoodsList(){
		//自动验证规则
		$this->validate = array(
			  array('goods_list_stock', 'nonull', ' 库存数量不能为空 ',2,3),	  //多维数组判断无效
		);
		if(!$this->create()) return false;
		$gid = $_POST['goods_gid'];
			//获取数据库信息 组合数据 插入时判断是否重复
			$goodsListInfo = $this->where("goods_gid = '{$gid}'")->all();
			foreach($goodsListInfo as $k => $v ){
				$goods_list_compositeAttrId[] = $v['goods_list_compositeAttrId'];//所有附加出行组合到一个数组
			}
			//获取属性键名
			$attrKeyName = array_keys($_POST['attr']);
			//组合数据
			foreach($_POST['attr'][$attrKeyName[0]] as $k => $v){
				//组合附加值
				$data['goods_list_compositeAttrId'] = $v . ',' .$_POST['attr'][$attrKeyName[1]][$k]; //将数组1的$v 链接上数组字段2的$v值  
				//需要判断数据库当前这条是否重复
				$errorNum =  $k +1;
				if(isset($goods_list_compositeAttrId)){ //查询数据库 如果无返回值就不执行 重复验证 直接插入
					if(in_array($data['goods_list_compositeAttrId'], $goods_list_compositeAttrId)){					
						$this->error="第". $errorNum."个表单组合【附加信息已存在】，请勿重复提交";
						return false;
					}
				}
				//判断用户是否输入货号 没有则自动生成
				if(isset($_POST['goods_list_nums'][$k]) && $_POST['goods_list_nums'][$k] != ''){  
					$data['goods_list_nums'] = $_POST['goods_list_nums'][$k];
				}else{
					$data['goods_list_nums'] = date('ymdhis').'010000'.mt_rand(0, 1000);
				}
				//库存值判断
				if(!isset($_POST['goods_list_stock'][$k]) || $_POST['goods_list_stock'][$k] == ''){
					$this->error='第  '.$errorNum.'  个【表单库存数量】未填写';
					return false;
				}
				//库存 
				$data['goods_list_stock'] = $_POST['goods_list_stock'][$k];
				//商品id
				$data['goods_gid'] = $gid;  
				//写入数据
				$this->add($data);
			}
		return true;
	 }
	
	// 修改货品单
	public function editGoodsList(){
		//自动验证规则
		$this->validate = array(
//			  array('goods_list_stock', 'nonull', ' 库存数量不能为空 ',2,3),	  //多维数组判断无效
		);
		if(!$this->create()) return false;
		$lid = Q('get.lid');
		$gid = $_POST['goods_gid'];
			//获取数据库信息 组合数据 插入时判断是否重复
			$goodsListInfo = $this->where("goods_gid = '{$gid}'")->all();
			foreach($goodsListInfo as $k => $v ){
				$goods_list_compositeAttrId[] = $v['goods_list_compositeAttrId'];//所有附加出行组合到一个数组
			}
			//查询当前货品列表id 在判断重复时却掉 使本条可以修改除组合规格意外的值
			$thisListData = $this->where("goods_list_id = '{$lid}'")->find();
			//获取属性键名
			$attrKeyName = array_keys($_POST['attr']);
			//组合数据
			foreach($_POST['attr'][$attrKeyName[0]] as $k => $v){ //循环一个数组 其他数组用当前循环$k键名
				//组合附加值
				$data['goods_list_compositeAttrId'] = $v . ',' .$_POST['attr'][$attrKeyName[1]][$k]; //将数组1的$v 链接上数组字段2的$v值  
				//需要判断数据库当前这条是否重复
				$errorNum =  $k +1;
				if(isset($goods_list_compositeAttrId)){ //查询数据库 如果无返回值就不执行 重复验证 直接插入
					//匹配除掉本掉数据库默认值  避免本条 规格组合无修改清空下不能提交
					if(isset($thisListData['goods_list_compositeAttrId'])){						
						$lidKey = array_search($thisListData['goods_list_compositeAttrId'], $goods_list_compositeAttrId);			
						unset($goods_list_compositeAttrId[$lidKey]);
					}
					
					if(in_array($data['goods_list_compositeAttrId'], $goods_list_compositeAttrId)){					
						$this->error="组合【货品规格】已存在";
						return false;
					}
				}
				//判断用户是否输入货号 没有则自动生成
				if(isset($_POST['goods_list_nums'][$k]) && $_POST['goods_list_nums'][$k] != ''){  
					$data['goods_list_nums'] = $_POST['goods_list_nums'][$k];
				}else{
					$data['goods_list_nums'] = date('ymdhis').'010000'.mt_rand(0, 1000);
				}
				//库存值判断
				if(!isset($_POST['goods_list_stock'][$k]) || $_POST['goods_list_stock'][$k] == ''){
					$this->error='【表单库存数量】未填写';
					return false;
				}
				//库存 
				$data['goods_list_stock'] = $_POST['goods_list_stock'][$k];
				//商品id
				$data['goods_gid'] = $gid;  
				//写入数据
				$this->where("goods_list_id = '{$lid}'")->update($data);
			}
		return true;
	 }
	

 }
